/***************************************************************************
   Filename:    StateMachine.h
   Author:      Josh Partridge
   Description: The StateMachine class primarily holds a State enum
****************************************************************************/
#ifndef STATEMACHINE_H_INCLUDED
#define STATEMACHINE_H_INCLUDED

#include "helpers.h"

class StateMachine{

    private:

        State gameState;

    public:

        /************************************************************************************
         Name:               Paddle - constructor
         Description:        initializes StateMachine's state
        *************************************************************************************/
        StateMachine (State = TITLE);

        /************************************************************************************
         Name:               getState
         Description:        getter for the State
         Output:
                     return: State representing StateMachine's state
        *************************************************************************************/
        State getState ();

        /************************************************************************************
         Name:               getState
         Description:        getter for reference to State
         Output:
                     return: reference to StateMachine's state
        *************************************************************************************/
        State& getStateRef();

        /************************************************************************************
         Name:               setState
         Description:        setter for State
         Input:
                          v: State representing new State
        *************************************************************************************/
        void setState (State);

};

#endif // STATEMACHINE_H_INCLUDED
